package com.example.demo.hot;

/**
 * @Classname ClimbStairs
 * @Description  爬楼梯
 * @Date 2023/10/30 12:58
 * @Created by jyl
 */
public class ClimbStairs {


    //假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
    //
    //每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？
    //
    //示例 1：
    //
    //输入：n = 2
    //输出：2
    //解释：有两种方法可以爬到楼顶。
    //1. 1 阶 + 1 阶
    //2. 2 阶
    //示例 2：
    //
    //输入：n = 3
    //输出：3
    //解释：有三种方法可以爬到楼顶。
    //1. 1 阶 + 1 阶 + 1 阶
    //2. 1 阶 + 2 阶
    //3. 2 阶 + 1 阶

    class Solution {
        public int climbStairs(int n) {
            int[] res = new int[n];
            res[0] = 1;
            if(n < 2)
                return 1;
            res[1] = 2;
            for(int i = 2; i < n; i++) {
                res[i] = res[i-1] + res[i-2];
            }
            return res[n - 1];
        }
    }


    public static void main(String[] args) {
        ClimbStairs climbStairs = new ClimbStairs();
        Solution solution = climbStairs.new Solution();
        System.out.println(solution.climbStairs(1));
        System.out.println(solution.climbStairs(2));
        System.out.println(solution.climbStairs(3));
        System.out.println(solution.climbStairs(4));
        System.out.println(solution.climbStairs(5));
    }
}
